In SAS communications one or more SAS initiator devices may be coupled to one or more SAS target devices through zero or more SAS expanders to form a SAS domain. In general, SAS initiator devices may initiate or request an initial connection to a particular identified SAS target device. Prior to initiating or requesting such a connection, devices within the SAS domain must perform initial processing to establish one or more mutually supported speeds for communication between any pair of connected devices. In general, each SAS device (initiator, target, or expander) may support one or more SAS speeds for communication with other SAS devices coupled to its PHYs. SAS specifications provide for a variety of SAS speeds standardized for communications between SAS devices. Some devices may support only one or a few lower speeds, other devices may support only one or a few higher speeds, and many devices support a broad spectrum of high and/or low SAS speeds.
The process of establishing the mutually supported speeds that may be used for communication between any two devices is referred to as speed negotiation. For example, in the currently evolving SAS-2 specifications, each device must support a speed negotiation window. The speed negotiation process in the specification defines signals exchanged between a pair of SAS devices to determine one or more SAS speeds supported by both devices in a particular desired link. If multiple speeds are supported by both devices, the highest supported speed is generally utilized if performance is critical while a slower speed may be utilized if reliability is more important than communication speed. Even under the earlier SAS-1 specifications, each pair of devices performs a negotiation process to identify mutually supported SAS speeds for exchanges between the pair.
The speed negotiation process, whether in compliance with evolving SAS-2 standards or in compliance with earlier SAS standards, identifies one or more mutually supported SAS speeds for a pair of linked SAS devices and may also identify a set of speed related options for the one or more SAS speeds. Following establishment of one or more mutually supported SAS speeds, the SAS-2 specifications provide for a training window during which the pair of devices exchange predefined signals to test the link at a selected, mutually supported SAS speed and at a presently selected set of speed options. As presently specified in the evolving SAS-2 specifications, processing of the devices during the training window exchanges signals between a pair of SAS devices to verify that the devices can communicate using a selected speed with selected speed related options. In addition to a variety of SAS speeds and associated speed related options, the evolving SAS-2 specifications specify a number of training options for SAS transceivers that may be modified for improved communication between linked devices. These training options include, for example, amplitude of transmission, slew rate, de-emphasis, and spread spectrum clocking (“SSC”). The SAS-2 specifications and other related background material generally known to those of ordinary skill in the art is readily available at www.t10.org and other public locations and sites.
Interoperability of SAS devices from various vendors is an ongoing challenge. In particular, in view of the various training options that may be specified and/or modified for each device, the challenge of interoperability is further exacerbated. As presently specified in the evolving SAS-2 specifications, there is little assurance that a particular SAS speed and associated speed options, though mutually supported by both devices, will provide reliable exchanges between the pair of devices. One vendor may utilize particular default training related option settings while another vendor may prefer other default settings for their transceiver operation—even at the same mutually supported SAS speed. Nothing in the present evolving version of the SAS-2 specifications provides for relief from this interoperability challenge.
It is evident from the above discussion that an ongoing need exists to improve reliability of transfers between a pair of SAS devices by assuring that a mutually supported SAS connection will provide a desired level of both performance and reliability.